/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ar.com.siglo21.ppo.persistence.dao;

import ar.com.siglo21.ppo.model.Autor;
import ar.com.siglo21.ppo.model.Ejemplar;
import ar.com.siglo21.ppo.model.Estado;
import ar.com.siglo21.ppo.model.Genero;
import ar.com.siglo21.ppo.model.Libro;
import ar.com.siglo21.ppo.persistence.MySQLConnection;
import ar.com.siglo21.ppo.util.TrabajoIntegradorException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class EjemplarDAOImpl implements EjemplarDAO {

    @Override
    public void agregar(Ejemplar object) throws TrabajoIntegradorException, SQLException {
        String sql = "Insert into ejemplar(id_libro,id_estado,descripcion) values ('" + object.getLibro().getId()+  "','"+object.getEstado()+"','"+object.getDescripcion()+"')";
        MySQLConnection.getDbCon().insertORDeleteORUpdate(sql);
    }

    @Override
    public boolean existe(Ejemplar object) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void eliminar(Ejemplar object) throws TrabajoIntegradorException, SQLException {

        String sql = "DELETE FROM autor where id=" + object.getId();
        MySQLConnection.getDbCon().insertORDeleteORUpdate(sql);
    }

    @Override
    public Ejemplar leer(int id) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void actualizar(Ejemplar object) throws TrabajoIntegradorException, SQLException {
//        String sql="UPDATE ejemplar SET nombre='"+object.getNombre()+"',"+ "apellido='"+object.getApellido()+"'" +" where id="+object.getId();
//       MySQLConnection.getDbCon().insertORDeleteORUpdate(sql);
    }

    @Override
    public List<Ejemplar> listarEjemplares() throws SQLException, TrabajoIntegradorException {
        String sql = "Select * from ejemplar ej,libro lbr, estado est,genero g where ej.id_libro=lbr.id and ej.id_estado=est.id and g.id=lbr.id_genero";
        MySQLConnection.getDbCon().query(sql);
        Ejemplar ejemplar;
        Libro libro;
        Estado estado;
        Genero genero;

        List<Ejemplar> listaEjemplares = new ArrayList();
        ResultSet resulset = MySQLConnection.getDbCon().query(sql);

        while (resulset.next()) {
           ejemplar = new Ejemplar();
           libro = new Libro();
           estado = new Estado();
           genero = new Genero();
           
           ejemplar.setId(resulset.getInt(1));
           ejemplar.setDescripcion(resulset.getString(4));
           
           estado.setId(resulset.getInt(11));
           estado.setDescripcion(resulset.getString(12));
           
           ejemplar.setEstado(estado);
           
           genero.setId(resulset.getInt(13));
           genero.setDescripcion(resulset.getString(14));
           
           libro.setId(resulset.getInt(5));
           libro.setTitulo(resulset.getString(6));
           libro.setEditorial(resulset.getString(9));
           libro.setIsbn(resulset.getString(10));
           libro.setGenero(genero);
           
           ejemplar.setLibro(libro);
           
           
            listaEjemplares.add(ejemplar);
        }

        return listaEjemplares;

    }

    @Override
    public List<Ejemplar> listarEjemplaresDisponibles() throws SQLException, TrabajoIntegradorException {
         String sql = "Select * from ejemplar ej,libro lbr, estado est,genero g where ej.id_libro=lbr.id and ej.id_estado=est.id and g.id=lbr.id_genero and est.descripcion='DISPONIBLE'";
        System.out.println(sql);
         MySQLConnection.getDbCon().query(sql);
        Ejemplar ejemplar;
        Libro libro;
        Estado estado;
        Genero genero;

        List<Ejemplar> listaEjemplares = new ArrayList();
        ResultSet resulset = MySQLConnection.getDbCon().query(sql);

        while (resulset.next()) {
           ejemplar = new Ejemplar();
           libro = new Libro();
           estado = new Estado();
           genero = new Genero();
           
           ejemplar.setId(resulset.getInt(1));
           ejemplar.setDescripcion(resulset.getString(4));
           
           estado.setId(resulset.getInt(11));
           estado.setDescripcion(resulset.getString(12));
           
           ejemplar.setEstado(estado);
           
           genero.setId(resulset.getInt(13));
           genero.setDescripcion(resulset.getString(14));
           
           libro.setId(resulset.getInt(5));
           libro.setTitulo(resulset.getString(6));
           libro.setEditorial(resulset.getString(9));
           libro.setIsbn(resulset.getString(10));
           libro.setGenero(genero);
           
           ejemplar.setLibro(libro);
           
           
            listaEjemplares.add(ejemplar);
        }

        return listaEjemplares;

    }

}
